raises VmError for invalid configuration
"""
vm = XendDomainInfo()
- vm.restore = 1
ostype = "linux" #todo Set from somewhere (store in the src?).
restorefn = getattr(xc, "%s_restore" % ostype)
d = restorefn(state_file=src, progress=progress)
raise VmError('restore failed')
try:
vmconfig = sxp.from_string(d['vmconfig'])
- vm.config = sxp.child_value(vmconfig, 'config')
+ config = sxp.child_value(vmconfig, 'config')
except Exception, ex:
raise VmError('config error: ' + str(ex))
- deferred = vm.dom_construct(dom)
- vm.restore = 0
+ deferred = vm.dom_construct(dom, config)
def vifs_cb(val, vm):
vif_up(vm.ipaddrs)
deferred.addCallback(vifs_cb, vm)
d.addCallback(_vm_configure1, self)
return d
- def dom_construct(self, dom):
+ def dom_construct(self, dom, config):
"""Construct a vm for an existing domain.
@param dom: domain id
if not d:
raise VmError("Domain not found: %d" % dom)
try:
+ self.config = config
+ self.restore = 1
self.setdom(dom)
self.name = d['name']
self.memory = d['memory']/1024
self.destroy()
return err
deferred.addErrback(cberr)
+ self.restore = 0
except StandardError, ex:
self.destroy()
raise
savefile = os.path.abspath(args[1])
info = server.xend_domain_restore(savefile)
PrettyPrint.prettyprint(info)
+ id = sxp.child_value(info, 'id')
+ if id is not None:
+ server.xend_domain_unpause(id)
xm.prog(ProgRestore)
ioctxt->err = iostderr;
err = xc_linux_restore(xcinit(), ioctxt);
+ *dom = ioctxt->domain;
+ *vmconfig = ioctxt->vmconfig;
+ *vmconfig_n = ioctxt->vmconfig_n;
#endif
dprintf("< err=%d\n", err);
return err;